按照大佬的思路再优化一下,年月日也出来了
4e601478-0a58-4e38-8e75-58e78ab15e25-image.png

优化了上面大佬回答中的rcutils_time_point_value_as_hmsms_string

rcutils_ret_t rcutils_time_point_value_as_hmsms_string( const rcutils_time_point_value_t * time_point, char * str, size_t str_size) { RCUTILS_CHECK_ARGUMENT_FOR_NULL(time_point, RCUTILS_RET_INVALID_ARGUMENT); RCUTILS_CHECK_ARGUMENT_FOR_NULL(str, RCUTILS_RET_INVALID_ARGUMENT); if (0 == str_size) { return RCUTILS_RET_OK; } int64_t seconds = *time_point / (1000 * 1000 * 1000); int64_t milliseconds = *time_point / 1000000u % 1000; struct tm* timeinfo; int year, month, day, hour, minute, second; timeinfo = localtime(&seconds); year = timeinfo->tm_year + 1900; month = timeinfo->tm_mon + 1; day = timeinfo->tm_mday; hour = timeinfo->tm_hour; minute = timeinfo->tm_min; second = timeinfo->tm_sec; if (rcutils_snprintf( str, str_size, "%s%04d-%02d-%02d %02d:%02d:%02d.%03lu", (*time_point >= 0) ? "" : "->", year, month, day, hour, minute, second, milliseconds) < 0) { RCUTILS_SET_ERROR_MSG("failed to format time point into string"); return RCUTILS_RET_ERROR; } return RCUTILS_RET_OK; }

前面要加上 #include <time.h>

另外编译rcutils时还要需要先安装performance-test-fixture

sudo apt install ros-humble-performance-test-fixture